import {
  request
} from '../../request/index'
// 使用async用到的js
import regeneratorRuntime from '../../lib/runtime/runtime';
Page({

  /**
   * 页面的初始数据
   */
  data: {
    //  存储左侧菜单数据
    leftMenuList: [],
    // 存储右侧显示数据
    rightContent: [],
    // 左侧菜单点击当前索引
    currentIndex: 0,
    // 右侧滚动到顶部
    scrollTop: 0
  },
  //存储接口数据
  Cates: [],
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    /* 
      优化(缓存)
      1,先判断一下本地存储有没有旧数据
      {time.Date.now(),data:[...]}
      2,没有旧数据，直接发送请求
      3,有旧的数据 同时 旧数据也没有过期 就是用 本地存储中的旧数据
    */
    //  获取本地存储的数据（小程序中也是存在本地存储技术）
    const Cates = wx.getStorageSync("cates");
    // 如果本地存储没有数据，则直接发送请求
    if (!Cates) {
      this.getCategoryList()
    } else {
      // 有旧数据，定义过期时间，当旧数据超过10秒钟则重新发送请求
      if (Date.now() - Cates.time > 1000 * 10) {
        // 重新发送请求
        this.getCategoryList()
      } else {
        /* 没有超过五分钟则使用旧数据 */
        this.Cates = Cates.data
        // 赛选出左侧菜单数据
        let leftMenuList = this.Cates.map(v => v.cat_name)
        // // 筛选出右侧内容数据
        let rightContent = this.Cates[0].children
        this.setData({
          leftMenuList,
          rightContent
        })
      }
    }

  },
  //  获取分类数组
  async getCategoryList() {
    // request({
    //   url: '/categories'
    // }).then(result => {
    //   this.Cates = result.data.message
    //   // 把接口数据存储到本地数据
    //   wx.setStorageSync("cates", {
    //     time: Date.now(),
    //     data: this.Cates
    //   })
    //   // 赛选出左侧菜单数据
    //   let leftMenuList = this.Cates.map(v => v.cat_name)
    //   // // 筛选出右侧内容数据
    //   let rightContent = this.Cates[0].children
    //   this.setData({
    //     leftMenuList,
    //     rightContent
    //   })
    // })

    // 使用async和await语法
    const result = await request({
      url: '/categories'
    })
    this.Cates = result.data.message
    // 把接口数据存储到本地数据
    wx.setStorageSync("cates", {
      time: Date.now(),
      data: this.Cates
    })
    // 赛选出左侧菜单数据
    let leftMenuList = this.Cates.map(v => v.cat_name)
    // // 筛选出右侧内容数据
    let rightContent = this.Cates[0].children
    this.setData({
      leftMenuList,
      rightContent
    })
  },
  // 激活左侧菜单列表
  handleActiveMenu(e) {
    let {
      index
    } = e.currentTarget.dataset
    let rightContent = this.Cates[index].children
    this.setData({
      rightContent,
      currentIndex: index,
      // 右侧滚动到顶部
      scrollTop: 0
    })
  }
})